【初心者歓迎】Google Cloud 基本概念と全体像を学ぼう
概要
今回は、Google Cloudを学び始めた人向け、または復習する方向けにGoogle Cloudの概要についてお話ししていきます。
エンジニアであればGoogle Cloudについて、触れたことがなくてもある程度イメージすることはできるかもしれませんが、技術職でない方ではGoogle Cloudと聞いても、「Googleの何のサービスなのか」、「何をするためのものなのか」、イメージしにくいかもしれません。(それはAWSでもAzureという同列のクラウドサービスでも同じ)
今回は、自社でGoogle Cloudの企業支援をメインで行っている私が、そもそもGoogle Cloudって何だっけという広い範囲の内容で解説していきたいと思います。
Google Cloudってなに
では、単刀直入にGoogle Cloudとは何でしょうか?
誤解を恐れずに言うのであれば、システムやアプリを開発するためのインフラ基盤を提供するクラウドサービスとなります。
よって、皆様が普段スマホやパソコンからウェブサイトやアプリゲームなどを行うと思いますが、その裏ではGoogle Cloudを利用してサイトやアプリが動いている可能性があります。
では、クラウドサービスとは何でしょうか?
私が他業界の知人や家族などとクラウドの話をするときに決まって聞かれるのが「クラウドってストレージでしょ?」「AppleのiCloudの事?」このような内容です。
こちらの内容も間違ってはいないと思いますが、いわゆるクラウドという言葉をどう理解するかの話になると思います。
ユーザー目線から考えると日常生活をしていて自身が使用するサービスが主体となってクラウドを考えるので、iCloudなどのストレージサービスが真っ先にイメージしやすいのだと思います。
ただそれは業界的にはクラウドにはなりますが、SaaSサービスとして認知されております。
よって、冒頭でお伝えしたようにユーザーが利用するストレージサービスの裏では、Google Cloudのようなアプリの基盤を作るクラウドサービスが動いている可能性があります。
よって、皆様が普段利用するBoxやiCloudなどのようなサービスはSaaSサービスとしてのクラウドであり、対してGoogle Cloudとは、そのBoxやiCloudなどのようなSaaSアプリを作成するためのクラウドサービスであるということになります。
ちなみにSaaSサービスではない、Google Cloudのようなインフラ基盤を構築する環境をIaaSやPaaSと呼んだりします。(今回の話では特には触れません)
主要なサービス
Google Cloudでアプリケーションを開発する際に活用するリソースについて詳しく解説していきます。リソースとは、簡潔にいえばGoogle Cloud環境内で利用する各種サービスのことを指します。
皆さんはサーバーという言葉はご存知でしょうか。
Google Cloudのようなクラウドサービスでは、クラウドプロバイダー(この場合はGoogle)が保有するサーバーを、まるで自分専用のサーバーのように遠隔で操作することができるので、パソコン1台あれば、全世界のユーザーに対して提供できるような大規模アプリを開発することも可能なのです。
次項からは、その内部で動作する主要なサービスを解説していきます。
各サービスがどのような役割でどのようなメリットがあって、Google Cloudを利用するのかというイメージを持って頂けたら幸いです。
(ある程度噛み砕いた表現を使用し解説していきたいと思いますので、なるべく専門用語は避けたいと思います)
Cloud Run
Cloud Runはアプリケーションを構築するための土台を提供するサービスとなりますが、コンテナという言葉を聞いた事はありますでしょうか?
コンテナとは、アプリケーションを動かす上で必要な要素をまるっとパッケージ化したものであり、どこの環境でもコンテナがあれば、そのアプリケーションを開発することができるのです。
そして、このコンテナをCloud Runに搭載することで、一般サービスとしてユーザに提供できるアプリケーションが完成されます。
通常このコンテナを動かすには、たくさんの準備が必要なため、コンテナ自体を作成してもそれを動かす基盤も自身で用意しなければいけませんが、Cloud Runを利用することによりコンテナだけを用意して搭載させればアプリケーションとして完成します。
さらに、そのコンテナで開発したアプリケーションは、何十何万の複数のユーザーが利用することと思いますが、その際にアプリケーションの基盤をスケールさせなければいけません。
(スケールとは、1台のサーバーでは通信量が多すぎてパンクしてしまうので、サーバーを1台→2台→3台...10台、などのように増やしていくこと)
そのスケールも自動的に行ってくれるのがCloud Runであり、そういったアプリケーション機能外の重要な要素をGoogle Cloudの管理に任せられることにより(責任分界点)、アプリケーションの開発に重点を置くことができることがメリットです。
BigQuery
BigQueryはデータ分析のための基盤を提供するサービスであり、個人的にはGoogle CloudといえばBigQuery、俺の大胸筋といえばBigQueryというイメージです。
俺の大胸筋といえばBigQueryはさておき、データウェアハウスという言葉を聞いた事はありますでしょうか?
一般的にデータウェアハウスとは、大量のデータを効率的に保存し、分析するためのデータベースのことを指します。
そして、このデータウェアハウスをBigQueryに構築することで、ビジネスインサイトを導き出す強力な分析基盤が完成されます。(ビジネスにデータをうまく活用すること)
つまりBigQueryとはGoogle Cloudで提供する完全マネージド型のクラウドデータウェアハウスサービスです。大規模なデータを高速に分析できる能力を持ち、従来のデータ分析基盤の構築や管理の手間を大幅に軽減することがメリットとなります。
通常、大規模なデータ分析を行うには、膨大なインフラ準備が必要なため、データを収集しても、それを処理する環境も自身で用意しなければいけませんが、BigQueryを利用することによりデータを格納するだけで高度な分析が可能になります。
さらに、そのデータウェアハウスで行う分析は、何百何千もの複雑なクエリを同時に処理することになりますが、その際にデータ処理能力をスケールさせなければいけません。
(スケールとは、1台のサーバーでは処理能力が足りずに遅延が発生してしまうので、処理能力を1倍→2倍→3倍...10倍、などのように増強していくこと)
そのスケールも自動的に行ってくれるのがBigQueryであり、そういったデータ分析基盤の管理をGoogle Cloudに任せられることにより(責任分界点)、データの分析や洞察の抽出に重点を置くことができることがメリットです。
Cloud Storage
Cloud Storageはデータを保存するための基盤を提供するサービスとなります。
先ほど冒頭でiCloudなどのようなSaaSサービスのストレージに触れましたが、今回のストレージとは、そのSaaSサービスの裏で動くようなシステムとしてのストレージになります。
さらに、データレイクという言葉を聞いた事はありますでしょうか?
データレイクとは、あらゆる大量のデータを効率的に保存・管理するための仕組みであり、どのような種類や量のデータでも、Cloud Storageがあれば安全かつ柔軟に保存することができるのです。
そして、このデータレイクをCloud Storageに構築することで、様々なアプリケーションやサービスで利用できる強力なデータ保存基盤が完成されます。
通常、大規模なデータ保存システムを構築するには、多くの準備が必要なため、ストレージ環境を自身で用意し、管理しなければいけませんが、Cloud Storageを利用することによりデータをアップロードするだけで、安全で高性能なストレージ環境が即座に利用可能になります。
さらに、そのストレージには、数百TB、数PBといった膨大な量のデータが保存されることになりますが、その際にストレージ容量を拡張させなければいけません。
(拡張とは、1TBのストレージでは容量が足りなくなるので、1TB→10TB→100TB...1PB、などのように増やしていくこと)
その拡張も自動的に行ってくれるのがCloud Storageであり、そういったストレージインフラの管理をGoogle Cloudに任せられることにより(責任分界点)、データの活用や運用に重点を置くことができることがメリットです。
まとめ
いかがでしたでしょうか?
今回はクラウドという概念の説明から始まり、実際にGoogle Cloudでは何ができるかと言うことをお伝えしました。
普段触っているアプリやウェブサービスは、このようなクラウドサービスで構築されているケースも多くなってきています。
よりデジタル化が進む世の中で、普段身近にあるサービスの裏側の技術を知ることで、新たな発見や全く関係ない分野の仕事だとしても、知識を活用できるタイミングが来るかもしれません。
次回はより踏み込んだ内容でGoogle Cloudを紹介していきたいと思います。